package router

import (
	"admin-nexus-backend/internal/handler"
	"admin-nexus-backend/internal/middleware"

	"github.com/gin-gonic/gin"
	"gorm.io/gorm"
)

// SetupUserRoutes 设置用户管理相关路由
func SetupUserRoutes(router *gin.RouterGroup, db *gorm.DB, dataPermissionMiddleware *middleware.DataPermissionMiddleware) {
	userHandler := handler.NewUserHandler(db)

	// 用户管理接口
	users := router.Group("/users")
	users.Use(dataPermissionMiddleware.DataPermission()) // 应用数据权限中间件
	{
		users.GET("", userHandler.GetUserList)                            // 获取用户列表
		users.GET("/:id", userHandler.GetUserByID)                        // 获取用户详情
		users.POST("", userHandler.CreateUser)                            // 创建用户
		users.PUT("/:id", userHandler.UpdateUser)                         // 更新用户
		users.DELETE("/:id", userHandler.DeleteUser)                      // 删除用户
		users.PUT("/password", userHandler.ChangePassword)                // 修改密码
		users.PUT("/:id/password/reset", userHandler.ResetPassword)       // 重置密码
		users.GET("/:id/permissions", userHandler.GetUserPermissions)     // 获取用户权限
		users.POST("/:id/permissions", userHandler.AssignUserPermissions) // 分配用户权限
	}
}

// SetupUserProfileRoutes 设置个人资料管理路由
func SetupUserProfileRoutes(router *gin.RouterGroup, db *gorm.DB) {
	userHandler := handler.NewUserHandler(db)
	userOperationLogHandler := handler.NewUserOperationLogHandler(db)

	// 个人资料管理接口
	router.PUT("/user/profile", userHandler.UpdateProfile)                              // 更新个人资料
	router.PUT("/user/password", userHandler.ChangePassword)                            // 修改密码
	router.GET("/user/operation-logs", userOperationLogHandler.GetUserOperationLogList) // 获取操作日志
}
